home *** CD-ROM | disk | FTP | other *** search
/ Mac Format 1994 August / August CD.bin / Shareware / Games / Redcoder / About Redcoder 2.0 next >
Text File  |  1994-06-05  |  17KB  |  345 lines

  1. About Redcoder 2.0 by Alex MacAulay:
  2. -----------------------------------
  3.  
  4. Redcoder 2.0 is a greatly improved version of Redcoder 1.0. The most important
  5. additions are:
  6.  
  7. - Features textual view windows displaying the contents of the core.
  8. - Supports the proposed ICWS '94 standard by incorporating the pMARS assembler.
  9. - Can use various different core patterns to display in the core window.
  10.  
  11. Redcoder 2.0 is email-ware! If you use this program at all please send me
  12. a quick note at macaulay@ecr.mu.oz.au (or if it bounces from there, try
  13. macaulay@cs.mu.oz.au or macaulay@ee.mu.oz.au or macaulay@ariel.ucs.unimelb.edu.au).
  14. If you don't have e-mail access (or even if you do!), I would be very happy to
  15. receive a postcard from you!
  16.  
  17. My address is:
  18.  
  19.   Alex MacAulay
  20.   48 Culworth Ave
  21.   Killara, NSW 2071
  22.   Australia
  23.  
  24.  
  25. Before starting:
  26. ---------------
  27. Before you start using Redcoder you should already know what Core War is and
  28. know the Redcode language. The information below assumes some knowledge of
  29. these things. To find out about Core War, ftp to soda.berkeley.edu and
  30. check out the "/pub/corewar" directory. It holds tutorials on Redcode, lots
  31. and lots of example fighters, other Core War simulators for many different
  32. operating systems, archives of newsgroup discussions and other goodies.
  33.  
  34.  
  35. Getting started:
  36. ---------------
  37. When you open Redcoder, you should get a dialog box which asks you to choose
  38. a fighter list to open. An existing fighter list called "Fighter Examples" comes
  39. with this release (in the "Fighters" folder), so you should open it to try Redcoder
  40. out. You can also create a new, empty fighter list at this stage.
  41.  
  42. Three windows should appear when you open a fighter list. These are the
  43. Status window, the Core window and the fighter list window. The status window
  44. shows information about the current state of progress of a battle; the Core
  45. window shows the contents of the core in a graphical format; and the fighter
  46. list contains a list of fighters which you can load into the core.
  47.  
  48. Select a fighter from the fighter list such as "Redcoder Title" by clicking on
  49. it. Then choose "Load Fighter" from the "Fighter" menu to load the fighter into
  50. the core. Choose "Go" from the "Core" menu to start the fighter running.
  51.  
  52.  
  53. Fighter list window:
  54. -------------------
  55. The fighter list window is titled with the name of the file holding the fighter
  56. list. The "Fighter" menu contains various items which apply to fighters. See
  57. the description of the "Fighter" menu for more details. For each fighter the
  58. following information is shown:
  59.  
  60.   Name - The name of the fighter. If you include a ";name" comment then the name
  61.     given in this comment will be used. Otherwise the file name will be used.
  62.   Author - The author of the fighter. This is the name given in the ";author"
  63.     comment or is empty if no such comment appeared in the fighter.
  64.   Len - Length of the fighter in core locations.
  65.   W - Number of wins.
  66.   L - Number of losses.
  67.   T - Number of ties.
  68.  
  69. Also, a diamond ('◊') is shown to the left of the name of the fighter if it is
  70. known to have changed since the fighter was last compiled.
  71.  
  72. You can select fighters by clicking on them and select/deselect multiple fighters
  73. by holding down the shift or command keys when you click. Also, you can use the
  74. up and down arrows to navigate in the fighter list.
  75.  
  76.  
  77. "Core" window:
  78. -------------
  79. This contains a visual representation of the core. Different patterns correspond
  80. to different states of the core memory. To determine what each of these patterns
  81. mean, you can display the "Legend" window (do this by choosing "Legend" under
  82. the "Windows" menu). Drawing the changes to the core takes up a very large
  83. proportion of the processing during a battle. Here are the options (in increasing
  84. order of effect) to speed up a battle:
  85.  
  86. - Turn your monitor from colour to black and white mode (using the "Monitors"
  87.   control panel).
  88. - Use black and white and ensure you have "Use direct screen drawing" in the
  89.   preferences turned on. Move the Core window to the very left edge of the
  90.   screen so that the window's left border is not visible. Ensure that there
  91.   are no windows obscuring any part of the core window. Redcoder will then
  92.   draw directly to the screen giving an approximate 10 times speed increase.
  93.   You'll notice it if it works! Note: this may crash on some machines.
  94. - Hide the core window. Although you won't see the battle as it progresses,
  95.   all the changes are still recorded and you can just show the core window
  96.   again to see what has happened.
  97. - Turn off drawing completely by toggling the "Draw Changes" menu item in
  98.   the "Core" menu. This will not (visibly) record any changes made to the core
  99.   and is the fastest possible way to run a battle.
  100.  
  101. Click on a core location to display it's contents in the Status window.
  102.  
  103. Command-click on a core location to place or remove a breakpoint at that
  104. location. When a fighter tries to execute at location with a breakpoint, the
  105. battle is paused and the location displayed in the Status window.
  106.  
  107. Option-click on a core location to open up a textual view window displaying the
  108. contents of the core (and other useful information) of the locations around the
  109. location you have clicked on.
  110.  
  111.  
  112. "Status" window:
  113. ---------------
  114. This window shows the status of the core and the battle. It is a floating window
  115. which always stays in front of all other windows in the application.
  116.  
  117. The first line shows the number of cycles executed so far in the current
  118. battle. If a tournament is running, the number of rounds left in the tournament
  119. are also displayed (in brackets) on this line.
  120.  
  121. The second line shows the contents of a core location which you have clicked on
  122. in the Core window. If it contains a breakpoint, a bullet ('•') is shown after
  123. the contents. If you click on this line the location will be outlined in the
  124. Core window. Command-click on this line to place a breakpoint at this
  125. location. Option-click on this line to open a textual view window of the
  126. core around the location.
  127.  
  128. The rest of the window displays information about the fighters in the battle.
  129. Each line shows the patterns used for each fighter (for executing, executed,
  130. changed and dead core locations) and the name of the fighter. If the fighter
  131. is about to execute an instruction, then a little arrow will appear to the left
  132. of the fighter. Click on the name of the fighter to replace the name with some
  133. information about the fighter: the current number of tasks and the current
  134. location of its program counter (or PC). Click there again to revert it back to
  135. the name again. Click to the left of the name to outline the current location of
  136. the fighter's program counter in the Core window. Option-click to the left of the
  137. name to open a textual view of the core around the fighter's program counter.
  138. Command-click to the left of the name to place a breakpoint at the fighter's
  139. program counter.
  140.  
  141.  
  142. "View" Window:
  143. -------------
  144. This window is very useful for debugging fighters. It displays a vertical list
  145. of core locations with relevant information about each location. From left to
  146. right, the information given is:
  147.  
  148. - The absolute address of the location. This will have a bullet ('•') beside it
  149.   if there is a breakpoint at this location.
  150. - A little triangular arrow (different types of arrows for each fighter) if
  151.   the fighter will execute that instruction in it's next cycle.
  152. - The contents of the location.
  153. - The absolute addresses (in brackets) referred to by the a-field and b-field
  154.   of the location. For example, if the instruction at location 100 was
  155.   DAT.F $-100,$100 then the absoluted addresses would be (0,200).
  156. - The number of processes waiting to execute at that location for each fighter.
  157.  
  158. Clicking on an instruction in the view window affects different places within
  159. the core depending on where on the line you clicked. If you click on the
  160. address, arrow area or opcode, then the location itself is affected. If you click
  161. on the a-field or b-field then the location which that field refers to is
  162. affected. For example, say location 100 was MOV #1,$50. Then if you clicked on
  163. the a-field, location 100 would be affected since the '#' modifier refers to the
  164. current location. Clicking on the b-field would affect location 150 since the
  165. '$' modifier refers to the relative location. Say location 100 was change to
  166. MOV #1,@50 and location 150 was DAT $0,$20. Then clicking on the b-field of
  167. location 100 would affect location 170 (100+50+20). Just try this out a few
  168. times to get the hang of it... Also, clicking on the absolute addresses in
  169. brackets simply affects the location at those adrresses.
  170.  
  171. Now, what sort of ways can you affect locations? Well, clicking with the command
  172. key down will place a breakpoint at that location. Clicking with the option key
  173. will centre the view window onto that location. And simply clicking will hilite
  174. that location (ie. outline it in the core and display it in bold-red-underline
  175. in the view window).
  176.  
  177.  
  178. "Legend" Window:
  179. ---------------
  180. You can open the Legend window by choosing "Legend" from the "Windows" menu.
  181. This displays the patterns used for each of the fighters. The meanings of each
  182. of the types of patterns are:
  183.  
  184. Changed - the location has been modified.
  185. Executing - there is a process waiting to execute at this location.
  186. Executed - a process has executed the instruction at this location.
  187. Dead - a process has died at this location.
  188.  
  189.  
  190. "File" Menu:
  191. -----------
  192. New, Open…, Close, Save, Save As…, Save A Copy As…, Revert… - These menu items
  193.   are all standard and act on Text files.
  194. New Fighter List… - This creates a new, empty fighter list and opens it.
  195. Open Fighter List… - This opens an existing fighter list.
  196. Close Fighter List - This closes the current fighter list.
  197. Preferences… - This brings up a dialog box with various option which are
  198.   discussed in the Preferences section.
  199. Quit - Exits from Redcoder.
  200.  
  201.  
  202. "Edit" Menu:
  203. -----------
  204. Nothing unusual here. Note: Undoing is implemented for text editing. If you
  205. make a mistake then you can choose Undo to undo it!
  206.  
  207.  
  208. "Search" Menu:
  209. -------------
  210. This menu contains items which allow you to search and replace text in your
  211. fighter source code and are self-explanatory.
  212.  
  213.  
  214. "Core" Menu:
  215. -----------
  216. Go - Starts/continues a battle.
  217. Step - Executes one cycle for each fighter participating in the battle.
  218. Stop - Pauses execution of a battle.
  219. Insert/Remove Breakpoint - Places or clears a breakpoint at the location
  220.   currently shown in the Status window.
  221. Open View Window - Opens a textual view window displaying the core centred
  222.   around the location currently shown in the Status window.
  223. Clear Breakpoints - Removes all breakpoints.
  224. Clear Core - Stops a battle and erases the entire contents of the core.
  225. Declare Round… - Allows you to declare the results of the battle without
  226.   actually completing the battle. A dialog box will appear which has
  227.   options of Win, Loss or Tie for each fighter.
  228. Draw Changes - Turns drawing in the core on or off. This makes a MASSIVE
  229.   difference to the speed of the battle.
  230.  
  231.  
  232. "Fighter" Menu:
  233. --------------
  234. Most items in this menu can either be used when the Fighter list is in the front
  235. (in which case the item applies to the selected fighters) or when an edit window
  236. is in the front (in which case it applies to the fighter associated with the
  237. edit window).
  238.  
  239. Load Fighter - Loads the fighter(s) into random locations in the core which do
  240.   not overlap with other fighters already loaded in.
  241. Load Fighter Into… - Does the same as Load Fighter except that it allows you
  242.   to choose the loading location and the set of patterns used for each fighter.
  243. Compile - Compiles the fighter(s) and saves the 'executable' code in the fighter
  244.   list.
  245. Disassemble - Creates a new edit window which contains the assembly code for
  246.   the fighter(s).
  247. Reset Score - Sets the wins, losses and ties for the fighter(s) to zero.
  248. Add - Appends a fighter to the fighter list and associates the current edit window
  249.   with that fighter. (This only applies to edit windows).
  250. Add… - Brings up a file dialog box allowing you to choose several fighters to add
  251.   to the fighter list.
  252. Remove - Removes the fighter(s) from the fighter list.
  253. Start Tournament… - Starts a tournament with the selected fighters (requires
  254.   between two and four fighters). You can specify the number of rounds in the
  255.   tournament. The results are stored, as usual, in the W L T columns of the
  256.   fighters. You are given the option of resetting the numbres of wins, losses
  257.   and ties of each of the fighters back to zero before the tournament starts.
  258. Stop Tournament - This terminates a tournament which is currently in progress.
  259.  
  260.  
  261. "Windows" Menu:
  262. --------------
  263. This menu has four initial items - Core, Fighters, Status and Legend. Choosing one
  264. of these items shows the respective window and brings it to the front. If you have
  265. any edit windows open, they also appear in this menu.
  266.  
  267.  
  268. Preferences:
  269. -----------
  270. The "Preferences" item in the "File" menu allows you to modify the settings
  271. for the fighter list. These settings only apply when the fighter list is being
  272. used. (So if you set the core size to 100 in one fighter list, other fighter
  273. lists will still use their own core size). Changing some of these settings may
  274. require that all fighters are recompiled and/or the core be cleared. The settings
  275. are:
  276.  
  277. Core size - Number of core locations.
  278. Max tasks - Maximum number of tasks which can be allocated to each fighter.
  279. Max fighter length - Maximum allowed length (in instructions) for a fighter.
  280. Cycles before tie - Number of cycles in a battle before a tie is declared.
  281. Max write distance - A non-standard setting which allows fighters to only
  282.   change locations within a specified distance (on either side) of the
  283.   currently executing instruction.
  284. Tabs - The width (in spaces) of a tab in edit windows.
  285. Font - The font used in edit windows.
  286. Size - the text size used in edit windows.
  287. Compile fighters when loading - When this is on, fighters are recompiled
  288.   automatically before loading into the core if it is known that they have changed
  289.   since they were last compiled. This ensures that you are testing an up-to-date
  290.   fighter (in case you forgot to compile it first).
  291. Beep at end of round - Beeps when the battle finishes.
  292. Beep at breakpoint - Beeps when a breakpoint is reached.
  293. Use ICWS ’88 Standard - This changes two things if turned on. Firstly, the compiler
  294.   reverts to a (reasonably) standard ICWS ’88 compiler which doesn't allow the
  295.   additions from the ICWS ’94 standard (such as opcode modifiers). Secondly, when
  296.   displaying core locations, no opcode modifier is appended to the opcode.
  297. Verbose compiler output - This is a pMARS option which gives detailed information
  298.   as it compiles a fighter.
  299. Denormalise address offsets - With this option turned on, addresses in the fields
  300.   of an instruction which are greater than half the coresize are 'denormalised',
  301.   that is they have the core size subtracted from them so that if the core size
  302.   is 8000 then a field of 7998 would be displayed as -2. With this option turned
  303.   off, fields are displayed as they are stored (ie. 7998 is displayed as 7998).
  304.  
  305.  
  306. ICWS 88 Compatibility:
  307. ---------------------
  308. Redcoder is almost fully ICWS '88 (International Core War Standard 1988)
  309. compatible. The minor exceptions (actually additions) are:
  310. - Optionally allows commas in between fields.
  311. - All a- and b-modes are allowed. ICWS '88 does not allow some of these (for
  312.   example, mov #a,#b).
  313. - An extra mode, postincrement '>' (which is similar to the predecrement mode)
  314.   is allowed.
  315.  
  316. There is also an optional extension, the maximum write distance, which prevents
  317. a process from writing further than a specified distance from where it is
  318. executing. This can be turned on/off in the Preferences dialog.
  319.  
  320. ICWS 94 Compatibility:
  321. ---------------------
  322. Redcoder is compatible with the most recent ICWS ’94 draft (at the time of the
  323. release of this program) and uses the pMARS assembler which is based on this
  324. draft.
  325.  
  326. Credits:
  327. -------
  328. I have used some pieces of code from other authors in this program. They are:
  329.  
  330. pMARS by Albert Ma (ama@athena.mit.edu), Nandor Sieben (aznxs@asuacad.bitnet)
  331.   Stefan Strack (stst@vuse.vanderbilt.edu) and Mintardjo Wangsaw
  332.   (wangsawm@prism.cs.orst.edu) - I have (with the authors’ permission) ported
  333.   the assembler code in pMARS and used it as the assembler for Redcoder.
  334.  
  335. EMI88 by Mark A. Durham - A procedure which executes ICWS '88 code. The MARS
  336.   used in Redcoder was based on this procedure but hardly resembles it anymore.
  337.  
  338. TE32K 1.2 by Roy Wood (rrwood@canrem.com) - a TextEdit replacement which allows
  339.   documents larger than 32K and also has tabs. I've made a few little
  340.   modifications to this.
  341.  
  342. Infinity Windoid 2.2 by Troy Gaul (t-gaul@grayhawk.rent.com) - A floating
  343.   window WDEF which takes advantage of colour. This has no modifications at all.
  344.  
  345.